Technote 1155

JNI Tips: Building Your Native-Method Libraries For Mac OS


ñ⁄éü

éÑÇÕîÒèÌÇ…ïsñûÇ≈Ç∑ÅI

ê≥ǵǢçÄñ⁄ÇÃÉGÉNÉXÉ|Å[Ég

ÉâÉCÉuÉâÉäñºÇÃïtÇØï˚

ÉâÉCÉuÉâÉäÇÃîzíu

ÉçÅ[ÉhèàóùÇÃÉfÉoÉbÉO

éQçlï∂å£

JNI (Java Native Interface) ÇÕÉlÉCÉeÉBÉuÉRÅ[ÉhÇ≈ Java ÉÅÉ\ÉbÉhÇé¿ëïÇ∑ÇÈÇΩÇflÇÃÉNÉçÉXÉvÉâÉbÉgÉtÉHÅ[ÉÄïWèÄãKäiÇ≈Ç∑ÅBMRJ 2.0 Ç®ÇÊÇ— 2.1 ÇÕ JNI ÇÉTÉ|Å[ÉgǵǃǢNjÇ∑Ç™ÅAÉfÉxÉçÉbÉpÇÃǻǩDžÇÕé©çÏÇà JNI ÉâÉCÉuÉâÉäÇ Mac OS Ç≈ê≥èÌÇ…ìÆçÏÇ≥ÇπÇÁÇÍǻǢÉPÅ[ÉXǙdžÇËÇ‹Ç∑ÅBëÂîºÇÕÉrÉãÉhÇ‚ÉCÉìÉXÉgÅ[ÉãDžNjǬÇÌÇÈñ‚ëËÇ≈Ç∑ÅBDZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇ≈âåàï˚ñ@Çê‡ñæÇµÇ‹Ç∑ÅB



éÑÇÕîÒèÌÇ…ïsñû (unsatisfied) Ç≈Ç∑ÅI

JNI ÇégópǵÇΩÉRÅ[ÉhÇÃÉRÉìÉpÉCÉãÇΔÉäÉìÉNÇÕçœÇÒÇæÇÃÇ…ÅAǢǥégópÇ∑ÇÈíiÇ…Ç»ÇÈÇΔÅAMRJ Ç©ÇÁ UnsatisfiedLinkError Ç™ï‘Ç≥ÇÍÇÈDZÇΔǙdžÇËÇ‹Ç∑ÅBëºÇÃÉvÉâÉbÉgÉtÉHÅ[ÉÄÇ≈ÇÕìÆçÏçœÇ›ÇÃÉRÅ[ÉhÇà⁄êAǵÇΩèÍçáǻǫÅADZÇÍÇÕǩǻÇËǙǡǩÇËÇ∑ÇÈDZÇΔÇ≈Ç∑ÅBÇ≥Ç¢ÇÌÇ¢ÅADZÇÃñ‚ëËÇΔâåàï˚ñ@ÇÕÅAÇΩǢǃǢÇÃèÍçáîÒèÌÇ…ä»íPÇ≈Ç∑ÅBç≈LJÇÊÇ≠džÇÈÉgÉâÉuÉãÇÕéüÇÃí ÇËÇ≈Ç∑ÅB

  • çÏê¨ÇµÇΩÉÅÉ\ÉbÉhÇ™ÉGÉNÉXÉ|Å[ÉgÇ≥ÇÍǃǢǻǢÅB
  • ÉâÉCÉuÉâÉäÇÃÉRÅ[ÉhÉtÉâÉOÉÅÉìÉgñºÇ™ä‘à·Ç¡ÇƒÇ¢ÇÈÅB
  • ÉâÉCÉuÉâÉäÇÃÉRÅ[ÉhÇ™èäíËÇÃèÍèäÇ…íuÇ©ÇÍǃǮÇÁÇ∏ÅAMRJ Ç™å©Ç¬ÇØÇÁÇÍǻǢÅB

ǪÇÍÇ≈ÇÕÅA1 Ǭ 1 ǬÇè⁄ǵÇ≠å©ÇƒÇ¢Ç≠DZÇΔDžǵNjǵÇÂǧÅB

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ


ê≥ǵǢçÄñ⁄ÇÃÉGÉNÉXÉ|Å[Ég

MRJ Ç™ì«é“ÇÃÉâÉCÉuÉâÉäÇ©ÇÁê≥ǵǢä÷êîÇå©Ç¬ÇØÇƒåƒÇ—èoǵÇçsǧDžÇÕÅAÉGÉNÉXÉ|Å[ÉgÇ™ïKóvÇ≈Ç∑ÅBÉâÉCÉuÉâÉäÇÉäÉìÉNÇ∑ÇÈç€ÅAÉäÉìÉJÇ…Ç«ÇÃä÷êîÇÉGÉNÉXÉ|Å[ÉgÇ∑ÇÈÇÃÇ©ÇímÇÁÇπÇÈïKóvǙdžÇËÇ‹Ç∑ÅBÉGÉNÉXÉ|Å[ÉgÇÃê›íËï˚ñ@ÇÕÅAäJî≠ÉVÉXÉeÉÄ (ǮǪÇÁÇ≠ MPW Ç© CodeWarrior Ç≈ǵÇÂǧ) ÇÃÉ}ÉjÉÖÉAÉãÇ…è⁄ǵÇ≠ê‡ñæÇ≥ÇÍǃǢNjÇ∑Ç™ÅAäÓñ{ìIÇ…ÇÕÅAéüÇà 2 ǬÇÃï˚ñ@ǙdžÇËÇ‹Ç∑ÅB

.exp ÉtÉ@ÉCÉãÇégǧï˚ñ@ÅFìΔóßǵÇΩÅu.expÅvÉtÉ@ÉCÉãÇégǡǃÉGÉNÉXÉ|Å[ÉgÇê›íËǵNjÇ∑ÅB.exp ÉtÉ@ÉCÉãÇÕÉeÉLÉXÉgÉtÉ@ÉCÉãÇ≈ÅA1 çsÇ… 1 ǬÇ∏ǬÉGÉNÉXÉ|Å[ÉgÇ∑ÇÈä÷êîÇÃñºëOÇì¸ÇÍÇ‹Ç∑ÅBCodeWarrior ÇégópǵǃǢÇÈèÍçáÇÕÅAÉvÉçÉWÉFÉNÉgÇ….exp ÉtÉ@ÉCÉãÇí«â¡ÇµÅAÉvÉçÉWÉFÉNÉgê›íËÉ_ÉCÉAÉçÉOÇÃÅuPPC PEFÅvÉpÉlÉãÇ÷çsÇ´ÅAÅuExportÅvÉ|ÉbÉvÉAÉbÉvÇÅuUse .exp FileÅvÇ…ê›íËǵNjÇ∑ÅBMPW Çà ppclink ÉcÅ[ÉãÇégópǵǃǢÇÈèÍçáÇÕÅu-@exportÅvÉtÉâÉOÇéwíËǵǃÇ≠ÇæÇ≥Ç¢ÅB

.exp ÉtÉ@ÉCÉãÇégópÇ∑ÇÈèÍçáÅAä÷êîñºÇÇ∑Ç◊ǃê≥ämÇ…ãLǵ (É\Å[ÉXÉtÉ@ÉCÉãÇ©ÇÁì\ÇËïtÇØÇÈÇÃÇ™àÍî‘ämé¿Ç≈Ç∑)ÅAÉlÉCÉeÉBÉuÉÅÉ\ÉbÉhÇÃí«â¡ÅAçÌèúÅAñºèÃïœçXÇçsÇ¡ÇΩÇËÅAÉpÉâÉÅÅ[É^ÇïœçXǵÇΩÇÁÅAÉtÉ@ÉCÉãÇ…îΩâfÇ≥ÇπÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

#pragma export Çégǧï˚ñ@ÅFC/C++ÇÃÅupragmaÅvÇégǡǃÉGÉNÉXÉ|Å[ÉgÇ∑ÇÈä÷êîÇÉ}Å[ÉNÇ∑ÇÈï˚ñ@Ç≈ÅAéÑÇÕÇ±ÇøÇÁÇÃǟǧǙçDÇ›Ç≈Ç∑ÅBÅu#pragma export onÅvÇΔǢǧçsǙdžÇÈÇΔÅAÉRÉìÉpÉCÉâÇÕêÈåæÇ…ëòãˆÇµÇΩÇ∑Ç◊ǃÇÃä÷êîÇÉGÉNÉXÉ|Å[ÉgÇ∑ÇÈÇÊǧÉ}Å[ÉNǵNjÇ∑ÅBÅu#pragma export resetÅvÇΔǢǧçsÇÕDZÇÃÉÇÅ[ÉhÇÉIÉtDžǵNjÇ∑ÅBéüÇÃÇÊǧDžÅAJNI Ç™ê∂ê¨Ç∑ÇÈÉwÉbÉ_ÉtÉ@ÉCÉã (Ç∑Ç◊ǃÇÃÉÅÉ\ÉbÉhÇ™íÜÇ≈êÈåæÇ≥ÇÍǃǢÇÈ) ÇÉCÉìÉNÉãÅ[ÉhÇ∑ÇÈä‘ÇæÇØÉGÉNÉXÉ|Å[ÉgÉÇÅ[ÉhÇÉIÉìÇ…Ç∑ÇÈÇΔï÷óòÇ≈Ç∑ÅB

// MyNativeClass.c
#pragma export on
#include "MyNativeClass.h"  // DZÇÍÇ™ javah ÇÃê∂ê¨ÇµÇΩÉwÉbÉ_
#pragma export reset
                  
...ä÷êîÇÃñ{ëÃÇ™ë±Ç≠...

ÉGÉNÉXÉ|Å[ÉgÇ∑ÇÈä÷êîÇÉ}Å[ÉNÇ∑ÇÈï˚ñ@ÇΔǵǃÇÕëºÇ…ÅA Ç…íËã`Ç≥ÇÍǃǢÇÈÅAïWèÄÇà JNIEXPORT É}ÉNÉçÇΔ JNICALL É}ÉNÉçÇégǧLJÇÃǙdžÇËÇ‹Ç∑ÅB<jni.h>; JNIEXPORT ÇÕÅu#pragma exportÅvÇÉIÉìÇ…Ç∑ÇÈÇÃÇΔìØÇ∂ì≠ǴǙdžÇËÇ‹Ç∑ÅBDZÇÃÉRÅ[ÉhÇÕéüÇÃÇÊǧDžǻÇËÇ‹Ç∑ÅB

// MyNativeClass.c
#include "MyNativeClass.h"  // DZÇÍÇ™ javah ÇÃê∂ê¨ÇµÇΩÉwÉbÉ_
                  
JNIEXPORT jint JNICALL Java_com_foo_MyNativeClass_myMethod(JNIEnv* e) {
    ...
}

DZÇÃdžÇΔÅAÉ}Å[ÉNǵÇΩä÷êîÇÉGÉNÉXÉ|Å[ÉgÇ∑ÇÈÇÊǧÅAÉäÉìÉJÇ…éwé¶Ç∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBCodeWarrior ÇégópǵǃǢÇÈèÍçáÇÕÉvÉçÉWÉFÉNÉgê›íËÉ_ÉCÉAÉçÉOÇÃÅuPPC PEFÅvÉpÉlÉãÇ÷çsǡǃÅAÅuExportÅvÉ|ÉbÉvÉAÉbÉvÇÅuUse #pragmaÅvÇ…ê›íËǵNjÇ∑ÅBMPW Çà ppclink ÉcÅ[ÉãÇégópǵǃǢÇÈèÍçáÇÕÅAÉ}Å[ÉNÇ≥ÇÍÇΩä÷êîÇÕÇ∑Ç◊ǃé©ìÆìIÇ…ÉGÉNÉXÉ|Å[ÉgÇ≥ÇÍÇ‹Ç∑ÅB

2 î‘ñ⁄ÇÃÉeÉNÉjÉbÉNÇégǧóòì_ÇÕÅAÉlÉCÉeÉBÉuÉÅÉ\ÉbÉhÇÃç\ê¨Ç™ïœÇÌǡǃLJÅAèÌÇ…ê≥ǵǢä÷êîÇ™ÉGÉNÉXÉ|Å[ÉgÇ≥ÇÍÇÈDZÇΔÇ≈Ç∑ÅBïKóvÇ»çÏãΔÇÕ javah Ççƒé¿çs (CodeWarrior Ç≈ JNI ÉwÉbÉ_ÇèoóÕÇ∑ÇÈÉIÉvÉVÉáÉìÇégópǵǃǢÇÈèÍçáÇÕÅAJava ÉNÉâÉXÇçƒÉRÉìÉpÉCÉã) Ç∑ÇÈÇæÇØÇ≈ÅAéüÇ…ÉlÉCÉeÉBÉuÉâÉCÉuÉâÉäÇÉrÉãÉhÇ∑ÇÈç€ÅAÉGÉNÉXÉ|Å[Égä÷êîÇÃÉäÉXÉgÇÕé©ìÆìIÇ…çXêVÇ≥ÇÍÇ‹Ç∑ÅB

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ


ÉâÉCÉuÉâÉäñºÇÃïtÇØï˚

ÉfÉxÉçÉbÉpÇ™îΔÇ∑ 2 î‘ñ⁄ÇÃëÂÇ´Ç»ä‘à·Ç¢ÇÕÅAÉâÉCÉuÉâÉäÇÃñΩñºÇ™ïsê≥ämǻDZÇΔÇ≈Ç∑ÅBÉâÉCÉuÉâÉäÇÃñºëOÇÕ System.loadLibrary Ç÷ìnÇ∑ñºëOÇΔåµñßÇ…ìØÇ∂Ç≈Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB(Metrowerks Çà Java VM ÇÕÉâÉCÉuÉâÉäñºÇÃç≈èâÇ…Ågjava_ÅhÇ™ïKóvÇ≈Ç∑Ç™ÅAMRJ Ç≈ÇÕïKóvdžÇËÇ‹ÇπÇÒÅB)

Ç≥ÇÁÇ…ÅAÉâÉCÉuÉâÉäÇÃñºëOÇÕÉâÉCÉuÉâÉäÇÃÉtÉ@ÉCÉãñºÇΔìØÇ∂LJÇÃÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBÉtÉ@ÉCÉãñºÇÕñ≥éãÇ≥ÇÍÇ‹Ç∑ÅBèdóvÇ»ÇÃÇÕÉâÉCÉuÉâÉäñº (Ç‹ÇΩÇÕÅuÉtÉâÉOÉÅÉìÉgñºÅv) Ç≈Ç∑ÅBCodeWarrior Ç≈ÇÕDZÇÍÇÕÅuPPC PEFÅvÉvÉçÉWÉFÉNÉgê›íËÉpÉlÉãÇ≈ê›íËǵNjÇ∑ÅBMPW Çà ppclink Ç≈ÇÕÅuCODE>-fragnameÅvÉtÉâÉOÇégǡǃÇ≠ÇæÇ≥Ç¢ÅB

íçà”ÅF
MRJ 2.0 Ç®ÇÊÇ— MRJ 2.1 ÇÃëÅä˙íÒãüî≈ÇÃǻǩDžÇÕÅAÉâÉCÉuÉâÉäñºÇ…îÒÉAÉXÉLÅ[ï∂éöÉZÉbÉg (ÉAÉNÉZÉìÉgïtÇ´ÇÃï∂éöÇ‚ìoò^è§ïWÉ}Å[ÉNǻǫÇÃãLçÜ) ÇégǧÇΔǧNjÇ≠èàóùÇ≈Ç´Ç∏ÅAä‘à·Ç¡ÇΩï∂éöÇ…ïœä∑Ç≥ÇÍǃǢNjǵÇΩÅBDZÇÃñ‚ëËÇÕ MRJ 2.1 Ç≈âåàçœÇ›Ç≈Ç∑ÅB

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ


ÉâÉCÉuÉâÉäÇÃîzíu

ç≈å„Ç…ÅAÉâÉCÉuÉâÉäÇÃÉrÉãÉhÇ™äÆëSÇ…çsÇÌÇÍǃLJÅAMRJ ǙǪÇÍÇå©Ç¬ÇØÇÁÇÍÇ»ÇØÇÍÇŒédï˚ǙdžÇËÇ‹ÇπÇÒÅBÉâÉCÉuÉâÉäÉtÉ@ÉCÉãÇÕ CFM ÇÃåüçıÉpÉXÇ…îzíuÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBäÓñ{ìIÇ…ÇÕÅAéüÇÃèÍèäÇ…îzíuÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅB

  1. ÉAÉvÉäÉPÅ[ÉVÉáÉìé©ëÃÇÃì‡ïî
  2. ÉAÉvÉäÉPÅ[ÉVÉáÉìÇΔìØÇ∂ÉtÉHÉãÉ_
  3. ã@î\ägí£ÉtÉHÉãÉ_
  4. ã@î\ägí£ÉtÉHÉãÉ_íºâ∫ÇÃÉtÉHÉãÉ_ÅBó·Ç¶ÇŒÅAMRJ Libraries ÉtÉHÉãÉ_ÅBíºâ∫ÇÃÉtÉHÉãÉ_ÇÊÇËâ∫ÇÃÉtÉHÉãÉ_ÇÕåüçıÇ≥ÇÍÇ‹ÇπÇÒÅBǵÇΩǙǡǃÅAMRJ Libraries ÇÃÉTÉuÉtÉHÉãÉ_ÇÕåüçıÇ≥ÇÍÇ‹ÇπÇÒÅBÇÊÇ≠džÇÈé∏îsÇÕÅAÉâÉCÉuÉâÉäÇ MRJClasses ÉtÉHÉãÉ_Ç…îzíuǵǃǵNjǧDZÇΔÇ≈Ç∑ÅB

ÅuÉAÉvÉäÉPÅ[ÉVÉáÉìÅvÇΔÇÕÅAÇ‡ÇøÇÎÇÒÅAJBindery Ç≈ê∂ê¨ÇµÇΩÉAÉvÉäÉPÅ[ÉVÉáÉìÅAMicrosoft Internet ExplorerÅAApple Applet Runner ǻǫÇ≈Ç∑ÅB(ÉvÉçÉWÉFÉNÉgÇÉAÉvÉäÉPÅ[ÉVÉáÉìÇΔǵǃï€ë∂ÇπÇ∏ÅAJBindery Ç©ÇÁíºê⁄ÉRÅ[ÉhÇé¿çsǵǃǢÇÈèÍçáÅAÅuÉAÉvÉäÉPÅ[ÉVÉáÉìÅvÇÕ JBindery ǪÇÃLJÇÃÇé¶ÇµÇ‹Ç∑ÅB)

ì¡íËÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ǵǩégópǵǻǢÉlÉCÉeÉBÉuÉRÅ[ÉhÇÃÉâÉCÉuÉâÉäÇÕí èÌǪÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇΔìØÇ∂ÉtÉHÉãÉ_Ç…îzíuǵNjÇ∑ÅBÉlÉCÉeÉBÉuÉRÅ[ÉhÇ™ÅAMRJClasses ÉtÉHÉãÉ_Ç…ÉCÉìÉXÉgÅ[ÉãǵÇΩã§óL Java ÉâÉCÉuÉâÉäÇÃàÍïîÇ≈džÇÈèÍçáÅAÉlÉCÉeÉBÉuÉâÉCÉuÉâÉäÇÕ (ëOèqǵÇΩóùóRÇ©ÇÁÅAMRJClasses ÉtÉHÉãÉ_Ç≈ÇÕÇ»Ç≠) MRJ Libraries ÉtÉHÉãÉ_Ç…îzíuÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃì‡ïîÇ…ÉRÅ[ÉhÉtÉâÉOÉÅÉìÉgÇñÑÇflçûÇfiÇÃÇÕÅAì¡Ç… VFS (Virtual File System) ÇΔëgÇ›çáÇÌÇπÇΩèÍçáÅAÉAÉvÉäÉPÅ[ÉVÉáÉìëSëÃÇ 1 ǬÇÃÉtÉ@ÉCÉãÇ…ì¸ÇÍÇÈDZÇΔÇ™Ç≈Ç´ÇÈÇΩÇflÅAñ£óÕìIÇ≈Ç∑ÅBÉfÅ[É^ÉtÉHÅ[ÉNÇÕÇ∑Ç≈Ç… VFS Ç…égópÇ≥ÇÍǃǢÇÈÇÃÇ≈ÅAÉRÅ[ÉhÉtÉâÉOÉÅÉìÉgÇÃîzíuÇ…ç≈ìKÇ»èÍèäÇÕÉäÉ\Å[ÉXÇ≈Ç∑ÅBÉäÉìÉJÇ…ÇÕÉRÅ[ÉhÉäÉ\Å[ÉXÇê∂ê¨Ç∑ÇÈÇÊǧéwé¶ÇµÅAǪÇÃÉäÉ\Å[ÉXÇÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÉRÉsÅ[ǵǃÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÅecfrgÅfÉäÉ\Å[ÉXÇ…êVǵǢÉGÉìÉgÉäÇí«â¡ÇµÅAǪÇÃÉRÅ[ÉhÉtÉâÉOÉÅÉìÉgÇéwÇ∑ÇÊǧDžǵNjÇ∑ÅB

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ


ÉçÅ[ÉhèàóùÇÃÉfÉoÉbÉO

DZÇÍÇ‹Ç≈ê‡ñæÇµÇΩï˚ñ@Ç…Ç∑Ç◊ǃǵÇΩǙǡÇΩÇÃÇ…ÅAǫǧǵǃLJÉlÉCÉeÉBÉuÉâÉCÉuÉâÉäÇ™ÉçÅ[ÉhÇ≈ǴǻǢèÍçáÅAÉçÅ[ÉhèàóùÇÃÇ¢Ç≠ǬǩÇÉfÉoÉbÉOÇ∑ÇÈï˚ñ@ǙdžÇËÇ‹Ç∑ÅB(DZÇÃÇΩÇflÇ…ÇÕ MacsBug Ç™ÉCÉìÉXÉgÅ[ÉãÇ≥ÇÍÇƒÇ¢Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÅuTechnote 1154ÅFMacsBug Ç≈ Java ÉRÅ[ÉhÇÉfÉoÉbÉOÇ∑ÇÈï˚ñ@ÅvÇ… Java ÉfÉxÉçÉbÉpå¸ÇØÇà MacsBug ì¸ñÂǙdžÇËÇ‹Ç∑ÅB)

  1. ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ÉlÉCÉeÉBÉuÉâÉCÉuÉâÉäÇÉçÅ[ÉhǵÇÊǧÇΔÇ∑ÇÈëOÇ…ÅAcommand ÉLÅ[ÇâüǵǻǙÇÁìdåπÉLÅ[ÇâüǵǃÅAMacsBug Ç…ì¸ÇËÇ‹Ç∑ÅB

  2. éüÇÃÉRÉ}ÉìÉhÇì¸óÕǵNjÇ∑ÅB

    tvb GetSharedLibrary ';dm r3 pstring'

    ǪÇÍÇ©ÇÁÅugÅvÇì¸óÕǵǃÉAÉvÉäÉPÅ[ÉVÉáÉìÇë±çsǵNjÇ∑ÅB

  3. éüÇ… MRJ Ç™ÉlÉCÉeÉBÉuÉâÉCÉuÉâÉäÇÉçÅ[ÉhǵÇÊǧÇΔÇ∑ÇÈâ”èäÇ≈ÅAÉuÉåÅ[ÉNÉ|ÉCÉìÉgÇ…ìñÇΩÇËÅAMacsBug Ç…ì¸ÇËÇ‹Ç∑ÅBMacsBug ÇÃÉRÉìÉ\Å[Éãï\é¶Ç…ÅuPowerPC TVector Break At GetSharedLibraryÅvÇΔǢǧçsÇ™ï\é¶Ç≥ÇÍǃǮÇËÅAǪÇÃéüÇÃçsÇ…ÉçÅ[ÉhíÜÇÃÉâÉCÉuÉâÉäÇÃñºëOÇ™ï\é¶Ç≥ÇÍǃÇÈÇÕÇ∏Ç≈Ç∑ÅBMRJ ÇÕãNìÆéûÇ…ëΩêîÇÃÉâÉCÉuÉâÉäÇÉçÅ[ÉhÇ∑ÇÈÇΩÇflÅADZÇÍÇ™åúàƒÇÃÉâÉCÉuÉâÉäÇΔÇÕǩǨÇËÇ‹ÇπÇÒÅBǪǧÇ≈ǻǢèÍçáÇÕÅugÅvÇì¸óÕǵǃÉAÉvÉäÉPÅ[ÉVÉáÉìÇë±çsǵÅAçƒÇ—DZÇÃÅu3ÅvÇÃéËèáDžǵÇΩǙǡǃÇ≠ÇæÇ≥Ç¢ÅB

  4. å©Ç¬Ç©Ç¡ÇΩÉâÉCÉuÉâÉäÇ™ì«é“ÇÃçÏê¨ÇµÇΩLJÇÃÇ≈džǡÇΩÇÁÅAÉâÉCÉuÉâÉäñºÇÃãLèqÇ™ IDE Ç‹ÇΩÇÕÉäÉìÉJÇ…éwíËǵÇΩLJÇÃÇΔê≥ämÇ…ìØÇ∂Ç©ÅALJǧàÍìxÉ`ÉFÉbÉNǵǃÇ≠ÇæÇ≥Ç¢ÅBLJǵà·Ç¡ÇƒÇ¢ÇΩÇÁÅAàÍívÇ≥ÇπÇÈïKóvǙdžÇËÇ‹Ç∑ÅBç≈å„ÇÃÅu10ÅvÇÃéËèáÇçsǡǃǩÇÁÅAÉrÉãÉhǵíºÇµÅALJǧàÍìxééǵǃǛǃÇ≠ÇæÇ≥Ç¢ÅB

  5. Åur8ÅvÇì¸óÕǵǃ R8 ÉåÉWÉXÉ^ÇÃílÇï\é¶ÇµÇ‹Ç∑ÅBDZÇÃílÇÕå„Ç≈ïKóvÇ…Ç»ÇËÇ‹Ç∑ÅB

  6. Åugtp lrÅvÇì¸óÕǵǃÅAGetSharedLibrary ÇîÚÇ—âzǵNjÇ∑ (ÉXÉeÉbÉvÉIÅ[ÉoÅ[)ÅB

  7. Åuerror r3ÅvÇì¸óÕǵǃÅAï‘Ç≥ÇÍÇΩÉXÉeÅ[É^ÉXÇí≤Ç◊Ç‹Ç∑ÅBÉ[Éç (noErr) ÇÃèÍçáÅAÉâÉCÉuÉâÉäÇÕñ≥éñÇ…ÉçÅ[ÉhÇ≥ÇÍÅAèâä˙âªÇ≥ÇÍǃǢNjÇ∑ÅBDZǧǻÇÈÇΔÅAñ‚ëËÇÕÉGÉNÉXÉ|Å[ÉgéwíËǙǻǩǡÇΩÇΩÇflÇΔǢǧDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅB

  8. ÉGÉâÅ[Ç™É[ÉçÇ≈ǻǩǡÇΩèÍçáÇÕÅAǪÇÍÇÕǮǪÇÁÇ≠ CFM ÉGÉâÅ[ÇÃîÕàÕÅA-28xx DždžÇËÇ‹Ç∑ÅBÉGÉâÅ[ÉRÉ}ÉìÉhÇé¿çsÇ∑ÇÈÇΔä»íPÇ»ê‡ñæÇ™ï\é¶Ç≥ÇÍÇ‹Ç∑Ç™ÅAè⁄ç◊ÇÕÅwInside Macintosh: PowerPC System SoftwareÅxÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅBì¡Ç…ÇÊÇ≠džÇÈÉGÉâÅ[ÇÕ -2804 (fragLibNotFound) Ç≈ÅAì«é“ÇÃÉâÉCÉuÉâÉäÇ©ÅAǪÇÍÇÉCÉìÉ|Å[ÉgÇ∑ÇÈÉâÉCÉuÉâÉäÇ™å©Ç¬Ç©ÇÁǻǩǡÇΩDZÇΔÇï\ǵNjÇ∑ÅB

  9. DZÇÃÉGÉâÅ[ÇÕÅAì«é“ÇÃã§óLÉâÉCÉuÉâÉäÇéwÇ∑èÍçáÇΔÅAǪÇÍÇÉCÉìÉ|Å[ÉgÇ∑ÇÈï ÇÃÉâÉCÉuÉâÉäÇéwÇ∑èÍçáÇΔǙdžÇËÇ‹Ç∑ÅBÅu5ÅvÇÃéËèáÇ≈ì¸óÕǵÇΩÅur8ÅvÉRÉ}ÉìÉhÇévÇ¢èoǵǃÇ≠ÇæÇ≥Ç¢ÅBDZDZÇ≈Åudm XXXX pstringÅvÇì¸óÕǵǃÇ≠ÇæÇ≥Ç¢ÅBÅuXXXXÅvÇÕÅur8ÅvÉRÉ}ÉìÉhÇ≈ï‘Ç≥ÇÍÇΩ 16 êiêîÇÃÉåÉWÉXÉ^ÇÃílÇ≈Ç∑ÅBDZDZÇ≈ï\é¶Ç≥ÇÍÇÈï∂éöóÒÇ™ÅAÉGÉâÅ[ÇÃå¥àˆÇΔǻǡÇΩÉâÉCÉuÉâÉäÇÃñºëOÇ≈Ç∑ÅB

  10. ç≈å„Ç…ÅutvcÅvÇ≈ÉuÉåÅ[ÉNÉ|ÉCÉìÉgÇâèúǵÅAÅugÅvÇ≈ÉAÉvÉäÉPÅ[ÉVÉáÉìÇë±çsǵNjÇ∑ÅB

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ


éQçlï∂å£

  • Sun Microsystems äƒèCÅwThe Java Tutorial ContinuedÅxAddison-Wesley äßÅB1998 îNÅB
    óDÇÍÇΩ JNI ÇÃÉ`ÉÖÅ[ÉgÉäÉAÉãÇé˚ò^ÅBÉIÉìÉâÉCÉìÇ≈LJéQèΔâ¬î\ÅB
  • GordonÅARob íòÅwEssential JNIÅxPrentice-Hall PTR äßÅB1998 îNÅB
    JNI ÇÃóDÇÍÇΩê‡ñæÅAëΩêîÇÃÉTÉìÉvÉãÅAä™ññÇ…ï÷óòÇ»ÉäÉtÉ@ÉåÉìÉXÇ™ïtëÆÅBécîOǻǙÇÁÅAÉvÉâÉbÉgÉtÉHÅ[ÉÄï ÇÃè⁄ǵǢê‡ñæÇÕ Windows ÇΔ UNIX ÇÃÇ›Ç≈Ç∑Ç™ÅAñ‚ëËÇÃãNDZÇËǪǧǻïîï™ÇÕDZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgǙǮñÇ…óßǬÇ≈ǵÇÂǧÅB
  • Apple Computer äƒèCÅwInside Macintosh: PowerPC System SoftwareÅxAddison-Wesley äßÅB1994 îNÅB
    Code Fragment Manager (CFM) ÇΔ CFM Ç™ã§óLÉâÉCÉuÉâÉäÇÉçÅ[ÉhÇ∑ÇÈï˚ñ@DžǬǢǃÇÃè⁄ç◊Çé˚ò^ÅB(ëSï“ PDF å`éÆÇ≈ÉAÉbÉvÉãÇÃÉTÉCÉgÇ©ÇÁì¸éËâ¬î\ÅB)
  • Apple ComputerÅwBuilding and Managing Programs in MPWÅx
    ppclink ÇΔÉrÉãÉhèàóùÇä‹ÇfiÅAMPW ÉcÅ[ÉãÇÃê‡ñæÅB


êÊì™ÉyÅ[ÉWÇ…ñflÇÈ